
package iks.render.anim 
{
	import flash.display.*;
	import flash.utils.*;
	import iks.iface.*;
	import iks.render.*;
	
	/**
	 * 存储动画每帧位图数据类.
	 * @author StefanieKaka
	 */
	public final class KBitmapAnimatorInfo implements IKDispose
	{
		/**
		 * 构造动画数据存储类
		 */
		public function KBitmapAnimatorInfo() 
		{
			m_framesInfo = new Vector.<KFrameInfo>();
		}
		
///////////////////////////////////////////////////////////////////////////////////////////////////
// 公共域
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 添加数据帧信息
		 * @param	frameInfo 每帧数据信息
		 */
		public function addFrameInfo(frameInfo : KFrameInfo) : void
		{
			m_framesInfo.push(frameInfo);
		}
		
		/**
		 * 获得指定帧的数据信息
		 * @param	index 帧序号
		 * @return 返回指针帧的信息
		 * @throws	RangeError 指定的索引超出范围
		 */
		public function getFrameInfo(index : int) : KFrameInfo
		{
			return m_framesInfo[index];
		}
		
		/**
		 * 获得总帧数的大小
		 * @return 返回总帧数
		 */
		public function getTotalFrame() : int
		{
			return m_framesInfo.length;
		}
		
///////////////////////////////////////////////////////////////////////////////////////////////////
// 实现 IDispose 接口
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/// 释放资源
		public function dispose() : void
		{
			if (m_isDisposed)
				return;
			m_isDisposed = true;
			
			m_framesInfo.splice(0, m_framesInfo.length);
			m_framesInfo = null;
		}
		
///////////////////////////////////////////////////////////////////////////////////////////////////
// 私有域
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		private var m_isDisposed : Boolean = false;
		private var m_framesInfo : Vector.<KFrameInfo> = null;		// 保存每帧动画数据信息的集合
	}

}